#include <unistd.h>
#include <iostream>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
using namespace std;

// 读取数据
int main()
{
    // 创建命名管道
    int ret = mkfifo("pipe", 0666);
    if (ret < 0)
    {
        cout << "错误码:" << errno << " 错误信息:" << strerror(errno) << endl;
    }

    // 读的方式打开管道
    int fd = open("pipe", O_RDONLY);
    if (fd < 0)
    {
        cout << "错误码:" << errno << " 错误信息:" << strerror(errno) << endl;
        exit(-1);
    }

    // 读取信息
    char buffer[1024] = {0};

    int cnt = read(fd, buffer, sizeof(buffer) - 1); // 防止buffer被读穿，预留\0
    if (cnt > 0)
    {
        buffer[cnt] = 0;
        cout << "read接收到: " << buffer << endl;
    }
    else if (cnt == 0)
    {
        cout << "信息传输完毕" << endl;
    }

    close(fd);

    return 0;
}